//
// Created by Administrator on 2016/8/31.
//

#ifndef PROJECT_OBJECT_H
#define PROJECT_OBJECT_H

#include "ShareHeaders.h"

namespace ZainGL {

    class Object {
    protected:
        glm::vec3 mForward;
    public:
        virtual glm::vec3 getForward();

        virtual glm::vec3 getUp();

        virtual glm::vec3 getRight();

        virtual glm::vec3 getPosition();

        virtual void setPosition(const glm::vec3 &mPosition);

        const glm::mat4 getTransform() const;

        void setTransform(const glm::mat4 &mTransform);

        const std::vector<Object *> &getMInstances() const;

        void setMInstances(const std::vector<Object *> &mInstances);

    protected:
        glm::mat4 mTransform;
        std::vector<Object *> mInstances;

    public:

        void translate(glm::vec3 vec3Length);

        void rotate(GLfloat radian, glm::vec3 vec3Factor, glm::vec3 *pivot = nullptr);
    };
}


#endif //PROJECT_OBJECT_H
